#!/bin/bash

# 测试环境变量解析功能

set -e  # 遇到错误立即退出

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
cd "$SCRIPT_DIR"  # 留在 modb 目录中

echo "开始环境变量解析功能测试..."

# 设置测试环境变量
export PROJ_ROOT="/home/apachee/trunk/Crystal/CrystalFlowAnalyzer"

# 创建测试文件列表
cat > env_test.list << 'EOF'
# 测试环境变量路径的文件列表
$PROJ_ROOT/modb/counter_empty.v
${PROJ_ROOT}/modb/counter_full.v
EOF

# 创建简单的测试模块
cat > test_env_module.v << 'EOF'
module test_env_module (
    input clk,
    input reset,
    output reg [7:0] data
);
    always @(posedge clk or posedge reset) begin
        if (reset)
            data <= 8'h00;
        else
            data <= data + 1;
    end
endmodule
EOF

# 复制一个测试文件到预期位置
cp counter_empty.v "$PROJ_ROOT/modb/counter_empty.v" 2>/dev/null || echo "文件已存在或无法复制"
cp counter_full.v "$PROJ_ROOT/modb/counter_full.v" 2>/dev/null || echo "文件已存在或无法复制"

echo -n "测试环境变量解析功能 ... "
if ./moparse -f env_test.list -o env_test.modb > env_test.log 2>&1; then
    echo "通过"
else
    echo "失败"
    cat env_test.log
    exit 1
fi

# 验证解析结果
echo -n "验证解析结果 ... "
if ./moparse -s env_test.modb | grep -q "counter"; then
    echo "通过"
else
    echo "失败"
    exit 1
fi

# 清理测试文件
echo "清理测试文件..."
rm -f env_test.list env_test.modb env_test.log test_env_module.v

echo
echo "环境变量解析功能测试总结:"
echo "✓ 环境变量路径解析"
echo "✓ 带花括号的环境变量解析"
echo "✓ 文件列表处理"
echo
echo "所有环境变量解析测试通过!"